iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

昨天教各位建立部署 K8s 的事前環境的教學,不曉得各位是不是都成功將昨天的步驟都完成了呢?

大家如果都成功安裝完的話,那我們今天就要開始進入我們的主要目的,安裝 Kubernetes 了!

首先,我們要先加入 K8s 相關的 repository

sudo su -c "curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -"
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update

建立完之後,有在開發的各位應該都清楚,如果在使用的應用程式升級版本之後,很常會有一些小問題發生,例如:功能衝突、相容性問題等等...

所以,下一個步驟我們要先將我們的版本固定,並且讓它不會自動更新

version=1.18.20-00
echo $version
apt-cache show kubectl | grep "Version: 1.18.20-00"

將版本固定好後,就可以開始安裝我們的 K8s 了!

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo apt install -y kubelet=$version kubectl=$version kubeadm=$version
sudo apt-mark hold kubelet kubeadm kubectl

這邊要特別說的是,在安裝之前需要先清除刷新 swap。或許有些讀者看到這邊不知道什麼是 swap。

swap簡單來說,就是假如系統需要更多的記憶體資源,而實體記憶體已經用完,記憶體上不活動的頁面將會被移到 swap 空間。 雖然 swap 空間可以幫助系統增加一小部份容量的 RAM,不過不能將它當作更多記憶體的替代品,因為他的存取速度跟實體硬碟比起來慢太多了。

在我們下 sudo swapoff -a 這個指令後,就是關閉配置文件“/etc/fstab”中所有的交換空間。

之後我們需要建立Docker Daemon

cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
Docker Daemon:用來執行管理 Docker image、啟動 container、停止 container 的 service,它是一個 long time service。

建立完之後,就可以正式安裝我們的K8s了!

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker

當各位完成到這步以後,恭喜各位已經得到了一個 K8s 的 "Worker Node"了,也就是說得到了一個在幫忙工作的工人。

再接著以下的步驟後,就可以得到"Master Node"

sudo kubeadm init --v=5 --pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/v0.12.0/Documentation/kube-flannel.yml

kubectl cluster-info
watch kubectl get nodes

但如果暫時沒有 Worker Node 的話,需要管理的 Master Node先工作的話,我們需要先"污染"他,就需要下以下指令

kubectl taint nodes --all node-role.kubernetes.io/master-

當我們完全安裝好後,可以測試看看是否成功安裝,Status 如果顯示 Ready 的話,就是成功了!

kubectl get nodes
> NAME              STATUS   ROLES    AGE   VERSION
> user-virtualbox   Ready    master   2m    v1.18.20

那到這邊,基本的 Kubernetes 就已經建立好了,明天開始會慢慢跟各位介紹一些關於 K8s 的 resource 並實作。

今天就先這樣吧,大家掰掰!


上一篇
Day13 建立 Kubernetes 的事前準備
下一篇
Day15 建立各個 resource 前你應該知道的事
系列文
被容器束縛住的小宇宙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言